#define _CRT_SECURE_NO_WARNINGS 1

#include <algorithm>
#include <climits>
#include <iostream>
#include <vector>
using namespace std;

int main()
{
    int n;
    while (cin >> n)
    {
        if (n < 2)
        {
            cout << 0 << " " << 0 << endl;
            continue;
        }
        vector<int> a(n);

        for (int i = 0; i < n; i++)
            cin >> a[i];

        sort(a.begin(), a.end());

        int nmin = a[1] - a[0];
        for (int i = 1; i < n; i++)
            nmin = min(nmin, a[i] - a[i - 1]);
        int res = 0;

        if (nmin == 0)
        {
            for (int i = 0; i < n - 1; i++)
                for (int j = i + 1; j < n; j++)
                    if (a[j] == a[i])
                        res++;
        }
        else
        {
            for (int i = 1; i < n; i++)
                if (a[i] - a[i - 1] == nmin)
                    res++;
        }

        int nmax = a[n - 1] - a[0];
        int count = 0;
        if (nmax == 0)
            count = n * (n - 1) / 2;
        else
        {
            int count1 = 0, count2 = 0;
            for (int i = 0; i < n; i++)
                if (a[i] == a[0])    count1++;
                else if (a[i] == a[n - 1]) count2++;
            count = count1 * count2;
        }

        cout << res << " " << count << endl;
    }

    return 0;
}

//#include <iostream>
//#include <vector>
//using namespace std;
//
//int main()
//{
//    string s;
//    while (cin >> s)
//    {
//        int n = s.size();
//        vector<vector<int>> f(n + 1, vector<int>(n + 1));
//
//        for (int l = n; l > 0; l--)
//        {
//            f[l][l] = 1;
//            for (int r = l + 1; r <= n; r++)
//            {
//                if (s[l - 1] == s[r - 1])
//                    f[l][r] = f[l + 1][r - 1] + 2;
//                else
//                    f[l][r] = max(f[l + 1][r], f[l][r - 1]);
//            }
//        }
//
//        cout << n - f[1][n] << endl;
//    }
//    return 0;
//}

//#include <cctype>
//#include <iostream>
//using namespace std;
//
//int main()
//{
//    string s;
//    while (cin >> s)
//    {
//        int n = s.size();
//
//        int pos = 0;
//        for (int i = 0; i < s.size(); i++)
//        {
//            if (i < n && isupper(s[i]))
//                s.push_back(s[i]);
//            else
//                s[pos++] = s[i];
//        }
//        s = s.substr(0, n);
//        cout << s << endl;
//    }
//    return 0;
//}